package cn.xzqwjw.taskmanager.service;

import cn.xzqwjw.taskmanager.domain.pojo.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author rush
 */
public interface SysRoleService extends IService<SysRole> {

  /**
   * 增加角色，同时增加该角色所拥有的权限
   *
   * @param paramsJson 包含角色和此角色所有权限
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String add(String paramsJson);

  /**
   * 根据id删除角色，此权限所拥有的权限根据数据库设计自动删除关系
   *
   * @param id 角色id
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String delById(Integer id);

  /**
   * 修改角色
   *
   * @param paramsJson 携带新信息的角色对象和此角色所有权限
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String modifyAll(String paramsJson);

  /**
   * 修改启用状态
   *
   * @param paramsJson {"paramsJson" : { "IsUsed" : 1 }} json格式的参数列表 1：启用 0：不启用
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String patchEnabled(String paramsJson);

  /**
   * 根据id得到一条记录
   *
   * @param id 要查询的id
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String queryById(Integer id);

  /**
   * 查全部列表，不返回系统自带的角色
   *
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String listAll();

  /**
   * 添加角色时查询name是否已经使用过
   *
   * @param label 要查询的 label
   * @param id    要查询的角色id，如果此值大于0，说明是编辑角色时判断name是否已用
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String checkLabel(String label, Integer id);

  /**
   * 添加角色时查询code是否已经使用过
   *
   * @param code 要查询的code
   * @param id   要查询的角色id，如果此值大于0，说明是编辑角色时判断code是否已用
   * @return 返回给 controller 用于输出 response 的 json 格式的字符串
   */
  String checkCode(String code, Integer id);

}
